﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BL;
using BE;
using System.Data;
using System.Globalization;
using System.Drawing;


namespace UI.Tesoreria
{     
    public partial class frmCajaCierre : System.Web.UI.Page
    {
      
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                CajaDiaria_BL obj = new CajaDiaria_BL();
                CajaDiaria caja = obj.ObetenerCajaDiariaPorID(Convert.ToInt32(Session["IDCajaDiaria"]));
                ViewState["CajaDiariaModificando"] = caja;

                cargarCombo(caja.idCAJA.ToString());
                cargarGrillaEntradaCaja();
                cargarGrillaSalidaCaja();
                txtFechaApertura.Text = caja.fechaApertura.ToString();
                txtSaldoInicial.Text = caja.saldoInicial.ToString();
                txtSaldoInicial.Enabled = false;
                ddlCajaCierre.Enabled = false;
                txtFechaApertura.Enabled = false;
                txtFechaCierre.Enabled = false;
                txtFechaCierre.Text = DateTime.Now.ToString("dd/MM/yyyy");

                //CheckBox1.Checked = true;
                //CheckBox1.Checked = Convert.ToBoolean(Session["Activo"]);
                if (caja.Activo == true)
                {
                    txtSaldoFinalSist.Text = ((Convert.ToDecimal(txtSaldoInicial.Text) + Convert.ToDecimal(lblTotalEntrada.Text)) - Convert.ToDecimal(lblTotalSalida.Text)).ToString();
                    txtSaldoFinalSist.Enabled = false;
                    
                }
                else
                {
                    txtSaldoFinalSist.Text = Session["SaldoFinalSistema"].ToString();
                    txtsaldoFinalReal.Text = Session["SaldoFinalReal"].ToString();
                    txtSaldoFinalSist.Enabled = false;
                    txtsaldoFinalReal.Enabled = false;
                }

                CheckBox1.Enabled = false;
                              
               //txtSaldoFinalSist.Text= ((Convert.ToDecimal(txtSaldoInicial.Text) + Convert.ToDecimal(lblTotalEntrada.Text)) - Convert.ToDecimal(lblTotalSalida.Text)).ToString();               
               //txtSaldoFinalSist.Enabled = false;

                txtDiferencia.Enabled = false;
               //txtSaldoInicial.Properties.Mask.EditMask = "N2";
                //txtSaldoFinalSist.Text = Session["SaldoFinalSistema"].ToString();
                //txtsaldoFinalReal.Text = Session["SaldoFinalReal"].ToString();
                              
            }
            else
            { 
            }
        }

        #region "Metodos"

        private void cargarCombo(string idCaja)
        {

            Caja_BL obj = new Caja_BL();
            DataTable dato = new DataTable();
            dato = obj.ListadoCajaCombo(idCaja);
            ddlCajaCierre.DataSource = dato;
            ddlCajaCierre.DataValueField = "id";
            ddlCajaCierre.DataTextField = "Nombre";
            ddlCajaCierre.DataBind();
            //ddlCajaCierre.SelectedValue = prueba;
        }

        private void cargarGrillaEntradaCaja()
        {
            LabelErrorListadoEntradas.Text = "";

            try
            {
                string idCajaDiaria = Session["IDCajaDiaria"].ToString();
                EntradaCaja_BL obj = new EntradaCaja_BL();
                DataTable listado = obj.listadoCpxCaja(idCajaDiaria);
                grvEntradaCaja.DataSource = listado;
                grvEntradaCaja.DataBind();

                decimal sumaTotal = 0;
                foreach (GridViewRow row in grvEntradaCaja.Rows)
                {
                    sumaTotal +=  Convert.ToDecimal(row.Cells[2].Text);
                }
                lblTotalEntrada.Text = sumaTotal.ToString();


                if (listado.Rows.Count < 1)
                {
                    throw new Exception("No hay entradas registradas");
                }
            }
            catch (Exception ex)
            {
                LabelErrorListadoEntradas.Text = ex.Message.ToString();
            }
        }

        private void cargarGrillaSalidaCaja()
        {
            LabelErrorListadoSalidas.Text = "";

            try
            {
                string idCajaDiaria2 = Session["IDCajaDiaria"].ToString();
                SalidaCaja_BL obj = new SalidaCaja_BL();
                DataTable listado = obj.listadoCpxCaja(idCajaDiaria2);
                grvSalidadaCaja.DataSource = listado;
                grvSalidadaCaja.DataBind();

                decimal sumaTotal1 = 0;
                foreach (GridViewRow row in grvSalidadaCaja.Rows)
                {
                    sumaTotal1 += Convert.ToDecimal(row.Cells[2].Text);
                }
                lblTotalSalida.Text = sumaTotal1.ToString();
                if (listado.Rows.Count < 1)
                {
                    throw new Exception("No hay salidas registradas");
                }
               
            }
            catch (Exception ex)
            {
                LabelErrorListadoSalidas.Text = ex.Message.ToString();
            }
        }

        #endregion

        #region "Combos"

        protected void ddlCajaCierre_SelectedIndexChanged(object sender, EventArgs e)
        {
            //LabelError.Text = "";
            try
            {
                Caja_BL bl = new Caja_BL();
                Caja caja = bl.obtenerCajaPorId(ddlCajaCierre.SelectedItem.Value);
                //txtSaldo.Text = String.Format(CultureInfo.InvariantCulture, "{0:0,0.00}", caja.Saldo);
            }
            catch (Exception ex)
            {
                //LabelError.Text = ex.Message.ToString();

            }
        }

        #endregion

        #region "Grilla"

        //int subtotal = 0;

        protected void grvEntradaCaja_RowDataBound(object sender, GridViewRowEventArgs e)
        {



            //if ((e.Row.RowType == DataControlRowType.DataRow) && (e.Row.RowType != DataControlRowType.EmptyDataRow))
            //{

            //    subtotal += Convert.ToInt32(e.Row.Cells[2].Text);

            //}
            //if (e.Row.RowType == DataControlRowType.Footer)
            //{
            //    e.Row.Cells[0].Text = "Totales";

            //    e.Row.Cells[2].Text = Convert.ToString(subtotal);
            //}
        }

        #endregion   
        
        #region "Botones"

        protected void btnGuardarCierre_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                cargarGrillaEntradaCaja();
                cargarGrillaSalidaCaja();
                txtSaldoFinalSist.Text = ((Convert.ToDecimal(txtSaldoInicial.Text) + Convert.ToDecimal(lblTotalEntrada.Text)) - Convert.ToDecimal(lblTotalSalida.Text)).ToString();
                
                if (Convert.ToDecimal(txtSaldoFinalSist.Text) == Convert.ToDecimal(txtsaldoFinalReal.Text))
                {
                    txtDiferencia.Text = (Convert.ToDecimal(txtSaldoFinalSist.Text) - Convert.ToDecimal(txtsaldoFinalReal.Text)).ToString();
                    txtDiferencia.Enabled = false;
                    lblErrorDiferencia.Text = "";

                    CajaDiaria caja = (CajaDiaria) ViewState["CajaDiariaModificando"];
                    caja.FechaCierre = Convert.ToDateTime(txtFechaCierre.Text);
                    caja.SaldoFinalSistema = Convert.ToDecimal(txtSaldoFinalSist.Text);
                    caja.SaldoFinalReal = Convert.ToDecimal(txtsaldoFinalReal.Text);
                    caja.Observacion = txtObservacion.Text;
                    caja.Activo = false;

                    CajaDiaria_BL caja_bl = new CajaDiaria_BL();
                    caja_bl.ActualizaCierre_CajaDiaria(caja);

                    Response.Redirect("frmCajaDiaria.aspx");

                }
                else
                {
                    txtDiferencia.Text = (Convert.ToDecimal(txtSaldoFinalSist.Text) - Convert.ToDecimal(txtsaldoFinalReal.Text)).ToString();
                    txtDiferencia.Enabled = false;
                    lblErrorDiferencia.Text = " No coincide Saldo Del Sistema con el Saldo Real, Verifique";
                    txtsaldoFinalReal.Focus();
                }
            }
            catch (Exception ex )
            {
                lblErrorDiferencia.Text = ex.Message.ToString();
            }                                    
        }

        //private void Grabar(CajaDiaria caja)
        //{
        //    caja.idCAJA = Convert.ToInt32(ddlCaja.SelectedItem.Value);
        //    caja.fechaApertura = Convert.ToDateTime(txtFechaApertura.Text);

        //    CajaDiaria_BL caja_bl = new CajaDiaria_BL();
            
            
        //        //caja.IDCreadoPor = User.Identity.Name;
        //        caja_bl.Insertar(caja);
            
       
        //    CargarGrilla();
        //}
        #endregion        
    }
}